package com.woniu.service.impl;

import com.woniu.dao.DutyDao;
import com.woniu.dao.UserDao;
import com.woniu.pojo.*;
import com.woniu.service.DutyService;
import org.springframework.stereotype.Service;

import javax.annotation.Resource;
import javax.servlet.http.HttpSession;
import java.util.List;
@Service
public class DutyServiceImpl implements DutyService {
    @Resource
    private  DutyDao  dutyDao;
    @Resource
    private UserDao userDao;
    /**
     *
     * @param pageBean
     * @param duty
     * @return
     */
    @Override
    public List<Duty> getDutyList(PageBean pageBean, Duty duty) {
        DutyExample dutyExample =new DutyExample();
        DutyExample.Criteria criteria=dutyExample.createCriteria();
        //按照dname查询
        if(duty.getDname()!=null&&!duty.getDname().equals("")){
            criteria.andDnameEqualTo(duty.getDname());
        }
        //按照uid查询
        if(duty.getUid()!=null&&!duty.getUid().equals("")){
            criteria.andUidEqualTo(duty.getUid());
        }
        //按照日志状态
        if(duty.getLogstate()!=null&&!("").equals(duty.getLogstate())){
            criteria.andLogstateEqualTo(duty.getLogstate());
        }

        Long countRow = dutyDao.countByExample(dutyExample);
        pageBean.setCountRow(countRow.intValue());
        Integer countPage = pageBean.getCountRow()%pageBean.getPageSize()==0?pageBean.getCountRow()/pageBean.getPageSize():pageBean.getCountRow()/pageBean.getPageSize()+1;
        pageBean.setCountPage(countPage);

        dutyExample.setOffset((long)((pageBean.getCurrentPage()-1)*pageBean.getPageSize()));
        dutyExample.setLimit(pageBean.getPageSize());
        dutyExample.setOrderByClause("ddate desc");
        List<Duty> dutyList=dutyDao.selectByExample(dutyExample);
        return  dutyList;
    }

    /**
     * 新增值班信息
     *    先从duty中获取uid 再从user表中查出 uname  将uname传入duty.danme
     * @param duty
     */
    @Override
    public void dutySave(Duty duty, HttpSession session) {
        User user = userDao.selectByPrimaryKey(duty.getUid());
        User login= (User) session.getAttribute("loginUser");
        duty.setDname(user.getUname());
        duty.setAssigner(login.getUname());
        duty.setLogstate("0");
        dutyDao.insertSelective(duty);
    }

    /**
     * 修改值班信息（添加日志）
     * @param duty
     * @param
     */
    @Override
    public void dutyEdit(Duty duty) {
        duty.setLogstate("1");
//        duty.setTime(duty.getBtime()-duty.getEtime());
        dutyDao.updateByPrimaryKeySelective(duty);
    }

    /**
     *  发现所有列表
     * @return
     */
    @Override
    public List<Duty> finAll4dutyselect() {
        return dutyDao.selectByExample(null);
    }

    /**
     *  发现一个
     * @param dno
     * @return
     */
    @Override
    public Duty findOne4Duty(Integer dno) {
        return dutyDao.selectByPrimaryKey(dno);
    }

    /**
     * 根据用户uid查询
     * @param pageBean
     * @param duty
     * @param session
     * @return
     */
    @Override
    public List<Duty> getDutyListByUid(PageBean pageBean, Duty duty, HttpSession session) {
        DutyExample dutyExample =new DutyExample();
        DutyExample.Criteria criteria=dutyExample.createCriteria();
        User login= (User) session.getAttribute("loginUser");
        //按照uid查询
        if(login.getUid()!=null&&!login.getUid().equals("")){
            criteria.andUidEqualTo(login.getUid());
        }
        Long countRow = dutyDao.countByExample(dutyExample);
        pageBean.setCountRow(countRow.intValue());
        Integer countPage = pageBean.getCountRow()%pageBean.getPageSize()==0?pageBean.getCountRow()/pageBean.getPageSize():pageBean.getCountRow()/pageBean.getPageSize()+1;
        pageBean.setCountPage(countPage);

        dutyExample.setOffset((long)((pageBean.getCurrentPage()-1)*pageBean.getPageSize()));
        dutyExample.setLimit(pageBean.getPageSize());
        dutyExample.setOrderByClause("dno desc");
        List<Duty> dutyList=dutyDao.selectByExample(dutyExample);
        return  dutyList;
    }
}
